/**
 * 
 */
package co.edu.uniquindio.pruebas;

import java.util.List;

import javax.naming.NamingException;

import org.junit.Assert;
import org.junit.Test;

import co.edu.uniquindio.logica.Color;


/**
 * 
 * Prueba implementation class for: PruebaColor
 * El proposito de esta clase es el probar la
 * DAO relacionada con el color de un automovil.
 * @author Andres Felipe Abril 
 * @author Luis Enrique Robledo
 *
 */
public class PruebaColor extends PruebaMagnum
{
	/**
	 * metodo contructor por defecto
	 * @throws NamingException
	 */
    public PruebaColor() throws NamingException {
		super();
		// TODO Auto-generated constructor stub
	}
    /**
     * este metodo me permite realizar el crud para un color
     * @throws NamingException
     */
    @Test
	public void testCrudColor() throws NamingException 
    {
    	Color color= new Color("cafe",101, 1, 4, 7);
    	
    	//prueba de insercion
    	colorDao.insert(color);
    	Assert.assertEquals(101, color.getCodigo());
    	
    	//Prueba de búsqueda
    	Color colorRecuperado=colorDao.findByKey(color.getCodigo());
    	Assert.assertEquals(colorRecuperado.getCodigo(), color.getCodigo());    	
    	
    	//Prueba actualización
    	colorRecuperado.setCodigo(987);
    	colorRecuperado.setNombre("Verde");
    	colorRecuperado.setR(4);
    	colorRecuperado.setG(98);
    	colorRecuperado.setR(34);
    	colorDao.update(colorRecuperado);
    	color=colorDao.findByKey(colorRecuperado.getCodigo());
    	Assert.assertEquals(987,color.getCodigo());
    	
    	Color colorPrueba = new Color(null,342,4,5,6);
    	colorDao.insert(colorPrueba);
    	
    	
    	//Prueba getAll
    	Color otroColor=new Color();
    	otroColor.setCodigo(657);
    	//otroColor.setNombre("azul");
    	otroColor.setB(76);
    	otroColor.setG(123);
    	otroColor.setR(0);
    	colorDao.insert(otroColor);
    	List<Color>colores=colorDao.getAll();
    	Assert.assertTrue(colores.contains(otroColor));
        Assert.assertTrue(colores.contains(color));    	
    	
      //Prueba delete
//        colorDao.remove(otroColor);
//        colorDao.remove(colorRecuperado);
//        colores=colorDao.getAll();
//        Assert.assertTrue(!colores.contains(otroColor));
//        Assert.assertTrue(!colores.contains(color));    	
    }
    /**
     * este metodo permite realizar la prueba para el metodo nombre null que retorna una lista de colores cuyos colores no tienen nombre 
     */
    @Test
    public void pruebaNombreNull()
    {
      List<Color> colores = colorDao.nombreNull();
      Assert.assertEquals(colores.size(), 2);
      for (Color color : colores) {
		System.out.println(color.getCodigo());
	}
    }
    	
}
